<?php

namespace aerovuelos\PersonaBundle\Entity;

use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints as DoctrineAssert;

/**
 * Personas
 *
 * @ORM\Table(name="personas")
 * @ORM\Entity
 * @DoctrineAssert\UniqueEntity(fields = {"email"}, message= "Este E-mail ya esta en uso.")
 */
class Personas
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="apellido", type="string", length=255, nullable=false)
     */
    private $apellido;

    /**
     * @var string
     *
     * @ORM\Column(name="nombre", type="string", length=255, nullable=false)
     * @Assert\NotBlank()
     */
    private $nombre;

    /**
     * @var string
     *
     * @ORM\Column(name="nro_doc", type="string", length=255, nullable=false)
     * @Assert\NotBlank()
     * @Assert\Length(
     *      min = 7,
     *      minMessage = "Debe tener al menos {{ limit }} caracteres."
     * )
     */
    private $nroDoc;

    /**
     * @var string
     *
     * @ORM\Column(name="email", type="string", length=255, nullable=false)
     * @Assert\NotBlank()
     * @Assert\Email(
     *      message = "El e-mail {{ value }} no es valido",
     *      checkMX=true
     * )
     * @Assert\Email()
     */
    private $email;

    /**
     * @var integer
     *
     * @ORM\Column(name="telefono", type="string", length=50, nullable=true)
     */
    private $telefono;

    /**
     * @var string
     *
     * @ORM\Column(name="sexo", type="string", length=1, nullable=true)
     */
    private $sexo;

    /**
     * @var \TipoDoc
     *
     * @ORM\ManyToOne(targetEntity="TipoDoc")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="tipo_doc_id", referencedColumnName="id")
     * })
     */
    private $tipoDoc;

    /**
     * @var \TipoPersona
     *
     * @ORM\ManyToOne(targetEntity="TipoPersona")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="tipo_persona_id", referencedColumnName="id")
     * })
     */
    private $tipoPersona;
    
    
    public function __toString() {
        return $this->getApellido().', '. $this->getNombre();
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set apellido
     *
     * @param string $apellido
     * @return Personas
     */
    public function setApellido($apellido)
    {
        $this->apellido = $apellido;
    
        return $this;
    }

    /**
     * Get apellido
     *
     * @return string 
     */
    public function getApellido()
    {
        return $this->apellido;
    }

    /**
     * Set nombre
     *
     * @param string $nombre
     * @return Personas
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    
        return $this;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }

    /**
     * Set nroDoc
     *
     * @param string $nroDoc
     * @return Personas
     */
    public function setNroDoc($nroDoc)
    {
        $this->nroDoc = $nroDoc;
    
        return $this;
    }

    /**
     * Get nroDoc
     *
     * @return string 
     */
    public function getNroDoc()
    {
        return $this->nroDoc;
    }

    /**
     * Set email
     *
     * @param string $email
     * @return Personas
     */
    public function setEmail($email)
    {
        $this->email = $email;
    
        return $this;
    }

    /**
     * Get email
     *
     * @return string 
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * Set telefono
     *
     * @param integer $telefono
     * @return Personas
     */
    public function setTelefono($telefono)
    {
        $this->telefono = $telefono;
    
        return $this;
    }

    /**
     * Get telefono
     *
     * @return integer 
     */
    public function getTelefono()
    {
        return $this->telefono;
    }

    /**
     * Set sexo
     *
     * @param string $sexo
     * @return Personas
     */
    public function setSexo($sexo)
    {
        $this->sexo = $sexo;
    
        return $this;
    }

    /**
     * Get sexo
     *
     * @return string 
     */
    public function getSexo()
    {
        return $this->sexo;
    }

    /**
     * Set tipoDoc
     *
     * @param \aerovuelos\PersonaBundle\Entity\TipoDoc $tipoDoc
     * @return Personas
     */
    public function setTipoDoc(\aerovuelos\PersonaBundle\Entity\TipoDoc $tipoDoc = null)
    {
        $this->tipoDoc = $tipoDoc;
    
        return $this;
    }

    /**
     * Get tipoDoc
     *
     * @return \aerovuelos\PersonaBundle\Entity\TipoDoc 
     */
    public function getTipoDoc()
    {
        return $this->tipoDoc;
    }

    /**
     * Set tipoPersona
     *
     * @param \aerovuelos\PersonaBundle\Entity\TipoPersona $tipoPersona
     * @return Personas
     */
    public function setTipoPersona(\aerovuelos\PersonaBundle\Entity\TipoPersona $tipoPersona = null)
    {
        $this->tipoPersona = $tipoPersona;
    
        return $this;
    }

    /**
     * Get tipoPersona
     *
     * @return \aerovuelos\PersonaBundle\Entity\TipoPersona 
     */
    public function getTipoPersona()
    {
        return $this->tipoPersona;
    }
}